package com.parkingspace.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.parkingspace.entity.*;
import sun.security.util.Password;

import javax.jws.soap.SOAPBinding;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author Gapper
 * @since 2021-05-24
 */
public interface IUserService extends IService<User> {

	/**
	 * 进行登录验证操作
	 * @param uaccount 传入账号
	 * @param upass 传入密码
	 * @return 返回当前登录用户
	 * @throws Exception
	 */
	Map<String, Object> findSome(String uaccount, String upass) throws Exception;

	Integer saveUser(User user);

	/**
	 * 进行用户选择进入界面的信息存储
	 * @param id 2代表业主,3代表租客
	 * @throws Exception
	 */
	void getUserNum(String token, Integer id) throws Exception;

	/**
	 * 进行实名认证
	 * @param token 传入令牌
	 * @param uname 传入真实姓名
	 * @param idCard 身份证号
	 * @throws Exception
	 */
	void updateVerified(String token, String uname, String idCard) throws Exception;

	/**
	 * 进行实名认证检测
	 * @param token 传入token
	 * @return 返回数字 0:未实名,1:已实名
	 * @throws Exception
	 */
	Integer realNameDetection (String token) throws Exception;

	/**
	 * 查询用户的个人信息并查询此人名下有多少个车位
	 * @param token 传入token
	 * @return 返回User
	 * @throws Exception
	 */
	Map<String, Object> findByName (String token) throws Exception;

	/**
	 * 修改密码
	 * @param token 传入令牌
	 * @param oldPassword 旧密码
	 * @param newPassword 新密码
	 * @return 返回Boolean
	 * @throws Exception
	 */
	Boolean updateUpass (String token, String oldPassword, String newPassword) throws Exception;

	/**
	 * 修改用户信息
	 * @param token 传入令牌
	 * @param user 传入要修改的用户信息
	 * @return 返回Boolean
	 * @throws Exception
	 */
	Boolean updateUser (String token, User user) throws Exception;

	/**
	 * 注销登录
	 * @param token 传入令牌
	 * @return 返回Boolean
	 * @throws Exception
	 */
	Boolean deleteUser (String token) throws Exception;



	List<User> findAll();

	boolean delete(Long uid);

    List<User> findBy(User user);

	List<User> renterAll(User user);

	List<User> ownerAll(User user);

	List<PropertyQuery> propertyAll(String uname,String propertyName);

	RenterQuery renterDetail(Long uid);

	OwnerQuery ownerDetail(Long uid);

	PropertyQuery propertyDetail(Long uid);
}
